package com.yunsuo.bean;

public class SingletonLazy {
    private static SingletonLazy singletonLazy;
    //addFinger=0是搜索指纹开门
    //addFinger=1是添加指纹
    private int method;
    private int IOSource;

    public void setMethod(int method) {
        this.method = method;
    }

    public int getIOSource() {
        return IOSource;
    }

    public void setIOSource(int IOSource) {
        this.IOSource = IOSource;
    }

    private SingletonLazy() {

    }

    public static SingletonLazy getInstance() {
        if (null == singletonLazy) {
            // 模拟在创建对象之前做一些准备工作
            //Thread.sleep(1000);
            synchronized (SingletonLazy.class) {
                if (null == singletonLazy) {
                    singletonLazy = new SingletonLazy();
                    singletonLazy.setMethod(0);
                    singletonLazy.setIOSource(1);
                }
            }
        }
        return singletonLazy;
    }

    public int getMethod() {
        return method;
    }

    /**
     * 目前有三种情况：
     * 1.持续的搜索指纹，判断开门
     * 2.录入指纹
     * 3.把指纹信息从上位机存到下位机
     * 这三种模式都要做互斥操作
     *
     * @return
     */
    public synchronized void changeMethod(int method) {
        //method=0是搜索指纹开门
        //method=1是添加指纹
        //method=2是把指纹信息从上位机存到下位机
        this.method = method;

//        if (addFinger == 1) {
//            addFinger = 0;
//        } else {
//            addFinger = 1;
//        }
    }


    //当需要调用操作指纹模块的代码时，都需要P操作，来判断IO资源是不是处于空闲状态。
    public synchronized int P_IO(){
        if(IOSource==0){
            //System.out.println("P_IO被占用");
            return -1;
        }else{
            //System.out.println("P_IO未被占用");
            this.IOSource-=1;
            return this.IOSource;
        }
    }

    //当指纹操作的代码结束后，需要释放IO资源。
    public synchronized int V_IO(){
        this.IOSource++;
        return this.IOSource;
    }
}
